정규화
정규화 (Normalization)
함수 종속성, 2NF, 3NF, BCNF
정규화의 목적
- 데이터 중복성 제거
- 입력/수정/삭제 시 이상 현상(Anomaly) 제거
- 데이터베이스 설계의 효율성 증대
함수 종속성 (Functional Dependency)
- X → Y : X의 값이 Y의 값을 유일하게 결정
- 완전 함수 종속: 비프라임 속성이 기본 키 전체에 종속
- 부분 함수 종속: 비프라임 속성이 기본 키의 일부에만 종속 → 2NF 위반
- 이행적 종속: X → Y → Z 형태에서 Y가 기본 키가 아닐 때 → 3NF 위반
제2정규형 (2NF)
조건: 1NF를 만족하면서, 모든 비프라임 속성이 기본 키 전체에 완전 함수 종속
위반 예시
기본 키: (동아리명, 학번)
만약 '역할'이 '학번'에만 종속 → 부분 함수 종속 → 2NF 위반
만약 '가입날'이 '동아리명'에만 종속 → 부분 함수 종속 → 2NF 위반
정규화 과정
R(A, B, C, D, E, F, G, H, I, J)
기본 키: {A, B}
{A,B} → {C} (완전 FD → 유지)
{A} → {D,E,I,J} (부분 FD → 분리)
{B} → {F,G,H} (부분 FD → 분리)
결과:
R1(A, B, C)
R2(A, D, E, I, J)
R3(B, F, G, H)
제3정규형 (3NF)
조건: 2NF를 만족하면서, 비프라임 속성이 기본 키에 대해 이행적 종속이 없어야 함
위반 예시
R2(A, D, E, I, J)
{A} → {D}
{D} → {I, J} ← A → D → I,J : 이행적 종속 → 3NF 위반
결과:
R2a(A, D, E)
R2b(D, I, J)
BCNF (Boyce-Codd Normal Form)
- 3NF보다 더 강한 조건
- 모든 함수 종속성 X → Y에서 X가 슈퍼 키여야 함
후보 키 판별 예제
R(A, B, C, D, E)
FD: AB → C, CD → E, DE → B
AB가 후보 키인가?
AB → C 가능
{A,B,C}에서 D, E를 결정 불가
→ 후보 키 아님
ABD가 후보 키인가?
AB → C → {A,B,C,D}
CD → E → {A,B,C,D,E} (모든 속성 결정)
부분 집합 AB, AD, BD 로는 모든 속성 결정 불가
→ ABD는 후보 키 ✓
관련 개념
- 데이터 모델 - ER 모델, 속성 종류
- ER to Relational Mapping - 정규화 적용 실습